from django.db import models
from django.contrib.auth.models import User

# Create your models here.
from utils.modelsMiXin import ModelSetMiXin


class Label(models.Model):
    name = models.CharField(max_length=30,verbose_name='标签名',unique=True) #unique是唯一约束
    user = models.ForeignKey(User,on_delete=models.CASCADE)

    class Meta:
        db_table = 'label'  #数据库里的名字
        verbose_name = '标签'  #后台显示并查询时的名字
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name  #查询标签时，会返回标签名，如不写此函数则会返回实例对象

class Topic(ModelSetMiXin):
    TYPE_CHOICES = (  #题目类型
        (0,'单选题'),
        (1,'多选题'),
        (3,'判断题'),
        (4,'填空题'),
        (5,'问答题'),
    )
    subject = models.TextField(verbose_name='题干')
    type = models.IntegerField(verbose_name='类型',choices=TYPE_CHOICES)
    score = models.FloatField(verbose_name='分值',default=1.0,null=True,blank=True)
    description = models.TextField(verbose_name='题目描述',null=True,blank=True) #null可以不填，blank前端可以不传过来（例如填空题）
    answer = models.TextField(verbose_name='答案')

    label = models.ForeignKey(Label,on_delete=models.CASCADE)#当前题目是哪一个类型的
    user = models.ForeignKey(User,on_delete=models.CASCADE)

    class Meta:
        ordering = ['-update_time'] #题目排序操作，根据题目的更新时间，新建的需要排前面，但因为默认为越旧越靠前，所以要加个 -号
        db_table = 'topic' #数据库里的名字
        verbose_name = '题目' #后台显示并查询时的名字
        verbose_name_plural = verbose_name


